home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
misc
/
amag
/
AM9403_2.lha
/
blitz-basic
/
listing.bb2
next >
Wrap
Text File
|
1994-01-26
|
4KB
|
190 lines
;
; Ein kleines Notizbuch
;
NEWTYPE .fiend
t$[8] ;jede Variable hat acht Einträge
End NEWTYPE
Dim List u.fiend(5000) ;Maximal 5000 Einträge
Dim *ptr.fiend(10) ;Zeiger fürs mehrspaltige Drucken
MaxLen p$=160:MaxLen f$=64 ;für Datei-Requester
FindScreen 0 ;Fenster auf der Workbench
Gosub setupwindow
Gosub newfiend
col=2:wid=42:hi=9:Gosub printset
Repeat
ev.l=WaitEvent
If ev=$40 Then gh=GadgetHit Else gh=-1
Select gh
Case 0:Gosub newfiend
Case 1:Gosub deletefiend
Case 2:Gosub lastfiend
Case 3:Gosub nextfiend
Case 4:test=0:Gosub doprintout
Case 5:Gosub doload
Case 6:Gosub dosave
Case 20:Gosub search
Case 21:Gosub nxsearch
Case 30:col=Val(StringText$(0,30)):Gosub printset
Case 31:wid=Val(StringText$(0,31)):Gosub printset
Case 32:hi=Val(StringText$(0,32)):Gosub printset
Case 33:test=1:Gosub doprintout
End Select
If gh>9 AND gh<18 Then i=gh-10:Gosub updatefield
Until ev=$200
End
.printset
; Erneuere die String-Gadgets fürs Drucken
SetString 0,30,Str$(col):Redraw 0,30
SetString 0,31,Str$(wid):Redraw 0,31
SetString 0,32,Str$(hi):Redraw 0,32
Return
.search
;Hole die Zeichenkette zum Suchen
srch$=UCase$(StringText$(0,20))
;Starte die Suche am Beginn der Liste
ResetList u()
.nxsearch
;Solange ein Eintrag existiert
While NextItem(u())
For i=0 To 7
If Instr(UCase$(u()\t[i]),srch$)
Pop For
Goto drawfiend
EndIf
Next
Wend
Return
.nextfiend
If NOT NextItem(u()) Then FirstItem u() ;Zum Anfang
Gosub drawfiend:Return
.lastfiend
If NOT PrevItem(u()) Then LastItem u()
Gosub drawfiend:Return
.deletefiend
KillItem u() ;Eintrag löschen
; Wenn's der letzte war und kein weiterer existiert,
; neuen einrichten
If NOT NextItem(u())
If NOT FirstItem(u()) Then Gosub newfiend
EndIf
Gosub drawfiend:Return
.newfiend
If AddItem(u())
u()\t[0]="**NEW**":Gosub drawfiend
EndIf
Return
.updatefield
u()\t[i]=StringText$(0,10+i)
If i<7 Then ActivateString 0,10+i+1
Return
.drawfiend
For i=0 To 7:SetString 0,10+i,u()\t[i]
Redraw 0,10+i
Next
ResetString 0,10:ActivateString 0,10:Return
.doload
f$=FileRequest$("LOAD FILE",p$,f$) ;Daten laden
If ReadFile(0,f$)
ClearList u():FileInput 0:i=0
While NOT Eof(0)
a$=Edit$(128)
If i=0 AND a$<>"" Then AddItem u()
If a$<>""
u()\t[i]=a$:If i<7 Then i+1 Else i=0
Else
i=0
EndIf
Wend
CloseFile 0
EndIf
Gosub drawfiend:Return
.dosave
f$=FileRequest$("SAVE FILE",p$,f$) ;Daten speichern
If WriteFile(0,f$)
FileOutput 0
ResetList u()
While NextItem(u())
For i=0 To 7:NPrint u()\t[i]:Next
Wend
CloseFile 0
EndIf
Return
.setupwindow
Restore gads
For i=0 To 6
Read a$
a$=Centre$(a$,6)
TextGadget 0,8+i*58,16,0,i,a$
Next
For i=0 To 7
StringGadget 0,6,32+i*11,0,10+i,128,400
Next
StringGadget 0,140,130,0,20,32,200
TextGadget 0,360,130,0,21,"NEXT"
For i=0 To 2
StringGadget 0,100,154+i*14,0,30+i,64,100
Next
TextGadget 0,240,170,0,33,"TEST PRINT XXXXXXX"
Window 0,50,0,420,200,$100e,"Mein Notizbuch",1,2,0
WLocate 16,121:Print "SEARCH STRING:"
GadgetBorder 10,128,400,16
WLocate 16,145:Print "COLUMNS:"
WLocate 16,159:Print " WIDTH:"
WLocate 16,173:Print " HEIGHT:"
GadgetBorder 10,152,400,44
Return
gads:Data$ "ADD",DELETE,<=,=>,"PRINT",LOAD,SAVE
.doprintout
If WriteFile(0,"prt:") ;Ausgabe auf den Drucker
FileOutput 0
If test=0 ;Wenn nicht der Testmodus
ResetList u() ;aktiv ist, dann alles
While NextItem(u()) ;drucken
*ptr(1)=u()
For i=2 To col
If NextItem(u()) Then *ptr(i)=u()
Next
For j=0 To hi-1
If j<8
For i=1 To col
Print LSet$(*ptr(i)\t[j],wid)
Next
EndIf
NPrint ""
Next
Wend
Else
For k=1 To 2
For j=0 To hi-1
If j<8
For i=1 To col
Print String$("X",wid-2),".."
Next
EndIf
NPrint ""
Next
Next
EndIf
CloseFile 0
EndIf
Return